import { getToken, removeToken } from '@/util/auth';
import env from '@/util/env';
import { tansParams } from "@/util/tansParams";

function service(options = {}) {
    console.log('options', options)

    // 判断请求的url是否以right开头 就是数权服务的接口
    if (options.url.startsWith('/right')) {
        options.url = `${env.rightUrl}${options.url.slice(6)}`;
        console.log('options', options)
        let url = options.url + '?' + tansParams(options.params);
        options.url = url;
        console.log('options', options)

    } else {
        options.url = `${env.baseUrl}${options.url}`;
        console.log('options.url', options.url)
    }
    // 判断本地是否存在token，如果存在则带上请求头
    console.log(getToken())
    if (getToken()) {
        options.header = {
            'content-type': 'application/json',
            'Authorization': `Bearer ${getToken()}`,// 这里是token(可自行修改)
            ...options.header
        };
    }
    // get请求映射params参数
    if ((options.method === 'get' || options.method === "GET") && options.params) {
        console.log('进入get',)
        let url = options.url + '?' + tansParams(options.params);
        url = url.slice(0, -1);
        options.params = {};
        options.url = url;
        console.log(' options.url', options.url)
    }

    // 如果是POST请求并且有参数，则将参数放入请求的body中
    if ((options.method === 'post' || options.method === 'POST') && options.data) {
        options.data = JSON.stringify(options.data); // 将参数转换为 JSON 字符串
    }

    return new Promise((resolved, rejected) => {
        options.success = (res) => {
            // 如果请求回来的状态码不是200则执行以下操作
            console.log(res.data.code !== 0)
            console.log(res.data.code !== 200 || res.data.code !== 0)
            if (res.data.code !== 200 && res.data.code !== 0) {
                // 非成功状态码弹窗
                uni.showToast({
                    icon: 'none',
                    duration: 3000,
                    title: `${res.data.msg || "操作失败"}`
                });
                // 登陆失效
                if (res.data.code === 403) {
                    // 清除本地token
                    removeToken()
                    // 关闭所有页面返回到登录页
                    uni.reLaunch({
                        url: '/pages/login/login'
                    })
                }
                // 返回错误信息
                rejected(res)
            } else {
                // 请求回来的状态码为200则返回内容
                resolved(res.data)
            }
        };
        options.fail = (err) => {
            // 请求失败弹窗
            uni.showToast({
                icon: 'none',
                duration: 3000,
                title: '服务器错误,请稍后再试'
            });
            rejected(err);
        };
        uni.request(options);
    });
}

export default service;
